/*
 * Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
 * Copyright (C) 2017-2019 THL A29 Limited, a Tencent company. All rights reserved.
 * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://opensource.org/licenses/MIT
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */

package apis

import (
	"bcs_cc/components/auth"
	"bcs_cc/storage/models"
	"bcs_cc/utils"

	"github.com/gin-gonic/gin"
)

// ProjectListInfoWithAuth : get auth project list info
func ProjectListInfoWithAuth(c *gin.Context) {
	// get project id list from auth
	username, err := getUsernameFromContext(c)
	if err != nil {
		utils.BadReqJSONResponse(c, err)
		return
	}

	authProjectCodeListInterface, err := auth.GetProjectCodeListFromAuth(username)
	if err != nil {
		utils.BadReqJSONResponse(c, err)
		return
	}

	authProjectCodeList, err := GetPojectFromAuthData(authProjectCodeListInterface)
	if err != nil {
		utils.BadReqJSONResponse(c, err)
		return
	}

	if len(authProjectCodeList) == 0 {
		utils.OKJSONResponseWithMessage(c, []map[string]interface{}{}, "Query success!")
		return
	}
	filterParams := &models.FilterParams{
		EnglishNameList: authProjectCodeList,
	}
	projectList, _, err := filterParams.ProjectListInfo()
	if err != nil {
		utils.DBErrorResponse(c, err)
		return
	}
	serializer := composeStructomap()
	data, _ := serializer.TransformArray(projectList)
	utils.OKJSONResponseWithMessage(c, data, "Query success!")
}
